package Easy.String;

//给你一个字符串 s，由若干单词组成，单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。
// 单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。
// 示例 1：
//输入：s = "Hello World"
//输出：5
//解释：最后一个单词是“World”，长度为 5。
//
// 示例 2：
//输入：s = "   fly me   to   the moon  "
//输出：4
//解释：最后一个单词是“moon”，长度为 4。
//
// 示例 3：
//输入：s = "luffy is still joyboy"
//输出：6
//解释：最后一个单词是长度为 6 的“joyboy”。
//
// 提示：
// 1 <= s.length <= 10⁴
// s 仅有英文字母和空格 ' ' 组成
// s 中至少存在一个单词


//leetcode submit region begin(Prohibit modification and deletion)
class LengthOfLastWord {
    public int lengthOfLastWord(String s) {
        int end = s.length() - 1;
        while (end >= 0 && s.charAt(end) == ' ') {
            end--;
        }
        if (end < 0) {
            return 0;
        }
        int start = end;
        while (start >= 0 && s.charAt(start) != ' ') {
            start--;
        }
        return end - start;
    }

    // 暴力解法
    public int lengthOfLastWord1(String s) {
        int len = 0;
        for (int i = s.length() - 1; i >= 0; i--) {
            if (s.charAt(i) == ' ' && len > 0) {
                return len;
            } else if (s.charAt(i) != ' ') {
                len++;
            }
        }
        return len;
    }

    public int lengthOfLastWord2(String s) {
        if (s == null || s.isEmpty()) {
            return 0;
        }
        String[] words = s.split(" ");
        if (words.length == 0) {
            return 0;
        }
        return words[words.length - 1].length();
    }
}
//leetcode submit region end(Prohibit modification and deletion)
